#include <stdio.h>
#include "service_network.h"
#include <stdlib.h>
#include "cJSON.h"
#include <string.h>

char* get_new_video_url()
{
    char buffer[4096] = {0};
    FILE *fp = NULL;

    printf(" 正在从 API 获取视频信息...\n");
    fp = popen("curl -sk 'https://api.kuleu.com/api/MP4_xiaojiejie?type=json'", "r");
    if (fp == NULL) {
        perror("popen (获取JSON) 失败");
        return NULL;
    }

    int retval = fread(buffer, 1, sizeof(buffer) - 1, fp);
    pclose(fp);

    if (retval <= 0) {
        fprintf(stderr, "错误: 未能从 API 读取到任何数据。\n");
        return NULL;
    }
    buffer[retval] = '\0';

    //解析json数据包
    cJSON* root = cJSON_Parse(buffer);
    if (root == NULL)
    {
        perror("cjson parse error");
        return NULL;
    }

    cJSON *code = cJSON_GetObjectItem(root, "code");
    //判断code是不是数字是返回1，不是返回0
    if ( !cJSON_IsNumber(code) || code->valueint != 200)
    {
        printf("API 请求失败。\n");
        cJSON_Delete(root);
        return NULL;
    }

    //获取url
    cJSON *video_item = cJSON_GetObjectItem(root,"mp4_video");
    char *video_url = NULL;
    //判断获取的是不是字符串成功返回1失败0
    if (!cJSON_IsString(video_item) || video_item->valuestring == NULL) {
        fprintf(stderr, "错误: 在 JSON 中找不到有效的 'mp4_video' URL。\n");
        cJSON_Delete(root);
        return NULL;
    }
    
printf("__%d__\n",__LINE__);    
    //char *video_url = video_item->valuestring;
    //不能这么使用，如果video_item释放后读取不到内容
    video_url = strdup(video_item->valuestring);
printf("__%d__\n",__LINE__);
    printf("成功获取视频 URL: %s\n", video_url);
    
    cJSON_Delete(root);
    return video_url;

}